import {ConfigEnv, defineConfig, UserConfigExport} from 'vite'
import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression'
import path from 'path'
import { viteVConsole } from 'vite-plugin-vconsole'


// https://vitejs.dev/config/
export default  ({ command, mode }: ConfigEnv): UserConfigExport => defineConfig({
    plugins: [
        vue(),
        viteCompression({
            verbose: true, // 是否在控制台中输出压缩结果
            disable: false,
            threshold: 10240, // 如果体积大于阈值将被压缩单位为b体积过小时请不要压缩以免适得其反
            algorithm: 'gzip', // 压缩算法可选['gzip'' brotliccompress ''deflate ''deflateRaw']
            ext: '.gz',
            deleteOriginFile: false // 源文件压缩后是否删除
        }),
        // viteVConsole({
        //     entry: path.resolve(__dirname, './src/main.ts'), // 入口文件
        //     localEnabled: command === 'serve', // serve开发环境下
        //     // enabled: command !== 'serve' || mode === 'test', // 打包环境下/发布测试包,
        //     config: { // vconsole 配置项
        //         maxLogNumber: 1000,
        //         theme: 'light'
        //     }
        // }),
    ],
    server: {
        open: true,
        host: '0.0.0.0',
        port: 8090,
        proxy: {
            '/link-car': {
                target: 'http://jcautospa.net',
                changeOrigin: true
            },
        }
    },
    envDir: './env',
    resolve: {
        alias: [{
            // https://github.com/vitejs/vite/issues/279#issuecomment-635646269
            find: '/@',
            replacement: path.resolve(__dirname, './src'),
        }
        ]
    },
    css: {
        preprocessorOptions: {
            less: {
                modifyVars: { // 在这里自定义主题色等样式
                    'primary-color': '#146EF7', // 全局主色
                },
                javascriptEnabled: true
            },
            // scss: {
            //     additionalData: `@import './src/wioc/assets/styles/themes/themes.scss';`
            // }
        },
    },
    base: './',
    build: {
        target: ['es2015'], // 最低支持 es2015
        sourcemap: false,
        chunkSizeWarningLimit: 1500,
        rollupOptions: {
            output: {
                experimentalMinChunkSize: 10000,
            }
        }
    }
})
